iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0

小獅:可以創建使用者了,但是我們要用哪一組帳號密碼去建立 token 然後,使用該 token 去建立帳號?

老獅:如上次討論的,我們可以用環境變數設定一組帳號密碼,例如:

  • 帳號:INIT_SUPERUSER_USERNAME
  • 密碼:INIT_SUPERUSER_PASSWORD

老獅:在伺服器跑起來以前去執行建立帳號的動作,這樣我們就可以使用該帳號

小獅:如何在伺服器跑起來以前去執行創建帳號?

老獅:這取決於你是如何部署你的伺服器的

小獅:我有看到 FastAPI 提供 startup 的事件監聽,我們可以在該事件後 hook 一些程式碼,在伺服器起起來時去作動,這可行嗎?

老獅:可以的,但是該方式有可能導致 Race Condition

小獅:Race Condition

老獅:是的,想想你今天一次有多個 Web 伺服器起起來時,會發生什麼?

小獅:一堆機器同時跑建立帳號的指令

老獅:這樣會導致什麼後果?

小獅:如果我們環境變數都一樣,那最終結果應該一樣,但是如果不一樣的話。。。

老獅:你就會不知道建立的帳號密碼是哪個才對

小獅:對耶,那我們該怎麼辦?

老獅:我們可以部署時,自動跑該 Script 當然要確保該環境可以連上資料庫

小獅:這我們要煩惱嗎?

老獅:如果我們要自己部署時再煩惱吧!我們可以先把流程規劃好,讓最後要部署的人或是我們自己建立的 CD (Continuous Delivery) 去處理

小獅:好,那我們預設,會有一個可以執行 Script 的 shell 去執行 python3 src/scripts/make_init_superuer.py 並且預期,一次部署只會跑一次,以此當做開發目標

老獅:看起來沒問題,我們來實作吧


上一篇
超級使用者 - 參數測試
下一篇
超級使用者 - 初始化 Script - 實作
系列文
FastAPI 開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言